package org.lds.hotkey.console.business.appinstance.service;

import org.lds.hotkey.common.model.dto.ResultDTO;
import org.lds.hotkey.common.model.pojo.OrderBy;
import org.lds.hotkey.common.model.pojo.PageResult;
import org.lds.hotkey.console.business.appinstance.entity.AppInstance;
import org.lds.hotkey.console.business.appinstance.model.request.*;
import org.lds.hotkey.console.business.appinstance.model.response.*;


/**
 * 基础服务类
 *
 * @author lidongsheng
 * @since 2024-06-05
 */
public interface AppInstanceBaseService {
    /**
     * 创建
     */
    ResultDTO<AppInstanceBaseResponse> createAppInstance(AppInstanceBaseCreateRequest request);

    /**
     * 批量创建
     */
    ResultDTO<AppInstanceBaseBatchCreateResponse> batchCreateAppInstance(AppInstanceBaseBatchCreateRequest request);

    /**
     * 删除
     */
    ResultDTO<AppInstanceBaseDeleteResponse> deleteAppInstance(AppInstanceBaseDeleteRequest request);

    /**
     * 批量删除
     */
    ResultDTO<AppInstanceBaseBatchDeleteResponse> batchDeleteAppInstance(AppInstanceBaseBatchDeleteRequest request);

    /**
     * 更新
     */
    ResultDTO<AppInstanceBaseResponse> updateAppInstance(AppInstanceBaseUpdateRequest request);

    /**
     * 批量更新
     */
    ResultDTO<AppInstanceBaseBatchUpdateResponse> batchUpdateAppInstance(AppInstanceBaseBatchUpdateRequest request);

    /**
     * 根据ID查询
     */
    ResultDTO<AppInstanceBaseResponse> getAppInstanceById(AppInstanceBaseGetByIdRequest request);

    /**
     * 根据ID集合查询
     */
    ResultDTO<AppInstanceBaseListResponse> getAppInstanceByIds(AppInstanceBaseGetByIdsRequest request);

    /**
     * 根据业务主键查询
     */
    AppInstance getAppInstanceByKey(AppInstanceBaseGetByKeyRequest request);

    /**
     * 查询
     */
    ResultDTO<AppInstanceBaseListResponse> listAppInstance(AppInstanceBaseListRequest request);

    /**
     * 查询所有
     */
    ResultDTO<AppInstanceBaseListResponse> listAllAppInstance(OrderBy orderBy);

    /**
     * 分页查询
     */
    ResultDTO<PageResult<AppInstanceBaseResponse>> listAppInstancePage(AppInstanceBaseListPageRequest request);


    /***************************** 异步尝鲜 谨慎使用[性能提升10倍以上] start ******************************/

    /**
     * 异步批量创建
     */
    ResultDTO<AppInstanceBaseBatchCreateResponse> batchCreateAppInstanceAsync(AppInstanceBaseBatchCreateRequest request);

    /**
     * 异步批量删除
     */
    ResultDTO<AppInstanceBaseBatchDeleteResponse> batchDeleteAppInstanceAsync(AppInstanceBaseBatchDeleteRequest request);

    /**
     * 异步批量更新
     */
    ResultDTO<AppInstanceBaseBatchUpdateResponse> batchUpdateAppInstanceAsync(AppInstanceBaseBatchUpdateRequest request);

    /***************************** 异步尝鲜 谨慎使用[性能提升10倍以上] end ******************************/
}